热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Solr11-SolrCloud的详细部署过程(基于Solr4.10.4搭建Solr集群)

目录1SolrCloud结构说明2环境的安装2.1环境说明2.2部署并启动ZooKeeper集群2.3部署Solr单机服务2.4

目录

  • 1 SolrCloud结构说明
  • 2 环境的安装
    • 2.1 环境说明
    • 2.2 部署并启动ZooKeeper集群
    • 2.3 部署Solr单机服务
    • 2.4 添加Solr的索引库
  • 3 部署Solr集群服务(SolrCloud)
    • 3.1 启动ZooKeeper
    • 3.2 ZooKeeper管理配置文件
    • 3.3 修改SolrCloud监听端口
    • 3.4 关联Solr与ZooKeeper
    • 3.5 分发SolrCloud服务
    • 3.6 启动所有Solr服务
    • 3.7 访问SolrCloud

1 SolrCloud结构说明

1) ZooKeeper集群:

a) ZooKeeper需要保证高可用, 需要搭建集群;

b) ZooKeeper需要进行投票和选举机制, 最少需要三个节点;

c) ZooKeeper的三个节点, 注意修改端口号不一样

2) Solr集群:

a) 需要四个节点(Solr应用服务器);

b) 四台Tomcat部署4个 solr应用服务器;

c) 整个Collection分为两个分片: 每个分片均由两个副本组成.

2 环境的安装

2.1 环境说明

  • OS: CentOS 7.0
  • JDK: HotSpot(TM) 1.8.0_162
  • Tomcat: 8.0.53
  • ZooKeeper: 3.4.10
  • Solr: 4.10.4

2.2 部署并启动ZooKeeper集群

ZooKeeper集群的安装部署, 详细文档参见 学习部署ZooKeeper集群 看这篇就够了.

2.3 部署Solr单机服务

参考Solr04-Solr单机服务的部署, 这里通过Tomcat的虚拟环境发布Solr项目.

(1) 创建SolrCloud的发布路径:

创建 /data/solr-cloud 作为项目发布路径, 并赋予读写权限:

mkdir -p /data/solr-cloud && cd /data
chmod 644 solr-cloud

(2) 将apache-tomcat-8.0.53.tar.gz拷贝到/data/solr-cloud/tomcat下并解压:

mkdir -p /data/solr-cloud/tomcat && cd /data/solr-cloud/tomcat
tar -zxf apache-tomcat-8.0.53.tar.gz

(3) 解压solr.4.10.4.tgz:

将solr.4.10.4.tgz拷贝到任意一台服务器的/data/solr-cloud下, 解压:

tar -zxf solr-4.10.4.tgz

(4) 找到Solr安装包example/webapps下的solr.war包, 解压缩:

cd /data/solr-cloud/solr-4.10.4/example/webapps
# 使用jar命令解压缩
jar -xvf solr.war solr
# 解压缩之后, 删除solr.war包, 防止Tomcat自动解压缩此包, 导致配置被覆盖
rm -rf solr.war

(5) 部署solr项目: 创建存放solr应用的目录, 并将解压后的solr.war拷贝至此目录下:

cd /data/solr-cloud 
mkdir -p tomcat/display/solr
# 将所有文件拷贝至solr目录下
cp -r solr-4.10.4/example/webapps tomcat/display/solr

(6) 使用Tomcat的虚拟目录安装: 这里没有将Solr服务添加到Tomcat的webapps目录下, 所以需要修改Tomcat的 $TOMCAT_HOME/conf/server.xml 文件, 添加Solr的服务路径:

说明: 这里将Solr服务部署在 /data/solr-cloud/tomcat/display/solr 路径下.


    
     
         
     
    
  • path: 指定访问该Web应用的名称, 即 http://ip:8080/solr 中端口号之后的部分;

  • docBase: 指定Web应用的文件路径, 如果是war包, 必须加上后缀;

  • 节点就是设置solr/home的目录, 用来存放各个Collection的索引文件.

(7) 配置其他文件:

a. 拷贝Solr解压包下的log4j.properties文件至Solr服务的WEB-INF/classes下:

cd /data/solr-cloud
mkdir -p tomcat/display/solr/WEB-INF/classes
cp solr-4.10.4/example/resources/log4j.properties tomcat/display/solr/WEB-INF/classes

b. 拷贝Solr解压包下example/lib/ext中的所有jar包拷贝到Solr服务的WEB-INF/lib下:

cd /data/solr-cloud
cp -r solr-4.10.4/example/lib/ext/* tomcat/display/solr/WEB-INF/lib

c. 拷贝Solr解压包下example/solr下的solr.xml至solrhome下(必须存在, 否则Solr服务将不能正常启动):

cd /data/solr-cloud && mkdir -p tomcat/solrhome
cp -r solr-4.10.4/example/solr/solr.xml tomcat/solrhome

d. 拷贝Solr解压包下的example/solr/collection1至tomcat目录下的solrhome中, 用作SolrCore的配置文件:

cd /data/solr-cloud
cp -r solr-4.10.4/examplesolr/collection1 tomcat/solrhome

启动Tomcat后, 访问 http://ip:port/solr, 若出现Solr管理页面, 说明单机版Solr部署完成.

  • 另一种虚拟环境发布方法:

    将上述 标签的所有内容单独建立为一个文件, 文件名为path的值, 将文件放入 ${TOMCAT_HOME}/conf/Catalina/localhost/ 目录下, Tomcat启动时, 将自动加载此配置文件的信息, 启动Tomcat后, 直接访问path路径即可.

2.4 添加Solr的索引库

1) 在Solr的管理界面点击[Core Admin], 再点击[Add Core]这项, 系统提示instanceDir和dataDir必须存在, 否则将抛出如下错误:

new_core: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load conf for core new_core: Error loading solr config from /data/solr-cloud/tomcat/solrhome/new_core/conf/solrconfig.xml

添加索引库报错图示

2) 映射solrhome的位置:

vim /data/solr-cloud/tomcat/display/solr/WEB-INF/web.xml
# 删除40行和46行的注释, 如下: 

    solr/home
    /data/solr-cloud/tomcat/solrhome
    java.lang.String

3) 重新启动Tomcat, 发现名为collection1的SolrCore已经加载上了:

添加索引库成功

  • 补充说明:

    a) 如果删除rm –rf /data/solr-cloud/tomcat/solrhome/collection1/core.properties文件, 集群启动后就没有collection;

    b) 以后再次创建SolrCore时, 可以直接复制collection1目录, 修改core.properties文件中的name即可.

3 部署Solr集群服务(SolrCloud)

3.1 启动ZooKeeper

SolrCloud的部署需要依赖ZooKeeper, 需要先启动所有ZooKeeper服务器.

3.2 ZooKeeper管理配置文件

在分布式服务中, 多采用ZooKeeper统一管理配置文件, 这里Solr使用到的配置文件主要有schema.xml、solrconfig.xml等, SolrCloud各个节点使用ZooKeeper统一管理的文件即可.

(1) 将Solr单机服务的配置文件交由ZooKeeper管理:

执行下述命令将Solr单机conf下的配置文件上传到ZooKeeper(此命令为一条命令):

cd /data/solr-cloud/solr-4.10.4/example/scripts/cloud-scripts

# 注意: 下面一长串只是一条命令, 不要太早回车哦~
sh zkcli.sh -zkhost 10.0.20.50:2181,10.0.20.51:2181,10.0.20.52:2181 -cmd upconfig -confdir /data/solr-cloud/tomcat/solrhome/collection1/conf -confname myconf
  • 命令说明:

    -zkhost: 指定ZooKeeper集群的ip及端口号, 多个之间以半角逗号隔开;

    -cmd: 表示使用某个内部命令, 这里使用upconfig, 即更新配置信息;

    -confdir: 需要上传的配置文件所在的位置;

    -confname: 自定义上传后ZooKeeper管理的配置文件的名称.

(2) 使用ZooKeeper的服务器查询配置文件:

cd /data/zookeeper/zookeeper-3.4.10/bin/
sh zkCli.sh

# 信息如下: 
......
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0] ls /
[configs, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /configs
[myconf]
[zk: localhost:2181(CONNECTED) 2] ls /configs/myconf
[currency.xml, mapping-FoldToASCII.txt, protwords.txt, scripts.conf, synonyms.txt, stopwords.txt, _schema_analysis_synonyms_english.json, velocity, admin-extra.html, update-script.js, _schema_analysis_stopwords_english.json, solrconfig.xml, admin-extra.menu-top.html, elevate.xml, schema.xml, clustering, mapping-ISOLatin1Accent.txt, _rest_managed.json, xslt, spellings.txt, lang, admin-extra.menu-bottom.html]
[zk: localhost:2181(CONNECTED) 3] quit
Quitting...
2018-10-25 21:27:08,122 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x166a788acfd0001 closed
2018-10-25 21:27:08,126 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@519] - EventThread shut down for session: 0x166a788acfd0001

查看ZooKeeper管理的配置文件

3.3 修改SolrCloud监听端口

修改每个Solr服务的/usr/local/solr-cloud/solr.xml文件中的hostPort(此端口默认为Jetty容器的访问端口8983). 如果在catalina.sh中指定, 此处的设置将被覆盖.

  
    ${host:}  
    ${jetty.port:8080}  
    ${hostContext:solr}  
    ${zkClientTimeout:30000}  
    ${genericCoreNodeNames:true}  
  

3.4 关联Solr与ZooKeeper

即关联Tomcat与ZooKeeper, 修改每一台Solr服务所属tomcat/bin目录下的catalina.sh, 指定ZooKeeper服务的地址:

vim /data/solr-cloud/tomcat/ apache-tomcat-8.0.53/bin/catalina.sh
# 在cygwin=false(大约109行)之前加入如下设置: 
JAVA_OPTS="$JAVA_OPTS -DzkHost=zoo1:2181,zoo2:2181,zoo3:2181"  

可以使用vim的查找功能查找JAVA_OPTS的定义的位置: 按[Esc], 在命令模式下输入:/cygwin, 然后回车, 按字母[n]查找下一个.

其中, -DzkHost: 用来指定ZooKeeper服务的ip和端口号.

3.5 分发SolrCloud服务

cd /data
scp -r solr-cloud/ 10.0.20.51:/data
scp –r solr-cloud/ 10.0.21.52:/data 

3.6 启动所有Solr服务

在启动ZooKeeper集群后, 依次启动所有Solr服务 --- 即Tomcat.

3.7 访问SolrCloud

访问任意一台Solr, 左侧菜单将出现[Cloud]功能按钮, 点击查看, 出现下图中的信息, 说明SolrCloud部署成功.

SolrCloud启动图

参考资料

http://eksliang.iteye.com/blog/2107002

https://www.cnblogs.com/jepson6669/p/9134652.html

版权声明

作者: ma_shoufeng(马瘦风)

出处: 博客园 马瘦风的博客

您的支持是对博主的极大鼓励, 感谢您的阅读.

本文版权归博主所有, 欢迎转载, 但未经博主同意必须保留此段声明, 且在文章页面明显位置给出原文链接, 否则博主保留追究法律责任的权利.


推荐阅读
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了如何使用iptables添加非对称的NAT规则段,以实现内网穿透和端口转发的功能。通过查阅相关文章,得出了解决方案,即当匹配的端口在映射端口的区间内时,可以成功进行端口转发。详细的操作步骤和命令示例也在文章中给出。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
author-avatar
政庆雅竹8
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有